home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / machack / Hacks97 / WarriorsProgress.sit / Warrior’s Progress / source code / Source / Libraries / Trees / RedBlackLinkTree.h < prev    next >
Text File  |  1997-06-28  |  2KB  |  57 lines

  1. // RedBlackLinkTree.h
  2.  
  3. #ifndef RedBlackLinkTree_h
  4. #define RedBlackLinkTree_h
  5.  
  6. #ifndef RedBlackKeyTree_h
  7. #include "RedBlackKeyTree.h"
  8. #endif
  9.  
  10. template < class Key, class Content > class RedBlackLink;
  11.  
  12. template < class Key, class Content >
  13. class RedBlackLinkTree: private RedBlackKeyTree<Key>
  14.   {
  15.     friend class RedBlackLink< Key, Content >;
  16.     
  17.     typedef RedBlackLink< Key, Content > Node;
  18.     typedef RedBlackKey<Key> NodeBase;
  19.     typedef RedBlackKeyTree<Key> TreeBase;
  20.     
  21.     private:
  22.         static Node *DownCast( NodeBase *n );
  23.         static const Node *DownCast( const NodeBase *n );
  24.         
  25.     public:
  26.         void Add( Node& n )                                    { TreeBase::Add( n ); }
  27.         void Remove( Node& n )                                { TreeBase::Remove( n ); }
  28.         
  29.         TreeBase::RemoveAll;
  30.         TreeBase::IsEmpty;
  31.         
  32.         Node *Root()                                            { return DownCast( TreeBase::Root() ); }
  33.         const Node *Root() const                            { return DownCast( TreeBase::Root() ); }
  34.         
  35.         Node *First()                                            { return DownCast( TreeBase::First() ); }
  36.         const Node *First() const                            { return DownCast( TreeBase::First() ); }
  37.         
  38.         Node *Last()                                            { return DownCast( TreeBase::Last() ); }
  39.         const Node *Last() const                            { return DownCast( TreeBase::Last() ); }
  40.         
  41.         Node *First( const Key& k )                        { return DownCast( TreeBase::First( k ) ); }
  42.         const Node *First( const Key& k ) const        { return DownCast( TreeBase::First( k ) ); }
  43.         
  44.         Node *Last( const Key& k )                            { return DownCast( TreeBase::Last( k ) ); }
  45.         const Node *Last( const Key& k ) const            { return DownCast( TreeBase::Last( k ) ); }
  46.  
  47.         Node *Find( const Key& k )                            { return DownCast( TreeBase::Find( k ) ); }
  48.         const Node *Find( const Key& k ) const            { return DownCast( TreeBase::Find( k ) ); }
  49.         
  50.         Node& operator[]( const Key& k )                    { return *DownCast( &TreeBase::operator[]( k ) ); }
  51.         const Node& operator[]( const Key& k ) const    { return *DownCast( &TreeBase::operator[]( k ) ); }
  52.         
  53.         TreeBase::Valid;
  54.   };
  55.  
  56. #endif
  57.